1. Technical Field
This disclosure relates generally to computer systems for processing of media files, and other content, using distributed computing techniques.
2. Brief Description of the Related Art
Content providers (such as large-scale broadcasters, film distributors, and the like) desire to distribute their content online in a manner that complements traditional mediums such as broadcast TV (including high definition or “HD” television) and DVD. It is important to them to have the ability to distribute content to a wide variety of third-party client application/device formats, and to offer a quality viewing experience regardless of network conditions, using modern technologies like adaptive bitrate streaming. Notably, since Internet-based content delivery is no longer limited to fixed line environments such as the desktop, and more and more end users now use mobile devices to receive and view content in wireless environments, the ability to support new client device formats and new streaming technologies is particularly important.
Media files are one common kind of content that content providers distribute. A media file may be single-media content (e.g., audio-only media) or the media file may comprise multiple media types, i.e., a multimedia file with audio/video data. Generally speaking, a given multimedia file is built on data in several different formats. For example, the audio and video data are each encoded using appropriate codecs, which are algorithms that encode and compress that data. Example codecs include H.264, VP6, AAC, MP3, etc. A container or package format that functions as a wrapper and describes the data elements and metadata of the multimedia file, so that a client application knows how to play it. Example container formats include Flash, Silverlight, MP4, PIFF, and MPEG-TS.
The bit rate at which to encode the audio and video data must be selected. An encoding with a lower bitrate and smaller frame size (among other factors) generally will be easier to stream reliably, since the amount of data will be smaller, but the quality of the experience will suffer. Likewise, an encoding at a higher-bitrate and a larger frame will be a higher quality experience, but is more likely to lead to interrupted and/or poor quality streams due to network delivery issues. Current adaptive bitrate streaming technologies require multiple streams each encoded at a different bitrate, allowing the client and/or server to switch between streams in order to compensate for network congestion.
While other kinds of media files (like an audio-only file) may be somewhat less complex than the multimedia file described above, they nevertheless present similar issues in terms of encoding and formatting, stream quality tradeoffs, and player compatibility.
Hence, to support the distribution of content to a wide variety of devices, content providers typically must create many different versions of their content. For example, they often will create multiple copies of a given movie title at different screen sizes, bit rates, quality levels and client player formats. Furthermore, over time they may want to change formats, for example by updating the encoding (e.g., to take advantage of newer codecs that compress content more efficiently). They may also need to change the container format to accommodate new client environments, a process often referred to as transmuxing. Failing to provide certain bit rates or poor encoding practices will likely reduce the quality of the stream. But generating so many different versions of content, as well as converting from one to another and storing them, is a time-consuming and costly process that is difficult to manage.
For online delivery (e.g., streaming, download) of these various versions of content, content providers often use distributed computing systems to deliver their content. One such distributed computer system is a “content delivery network” or “CDN” that is operated and managed by a service provider. The service provider typically provides the content delivery service on behalf of third parties. A “distributed system” of this type typically refers to a collection of autonomous computers linked by a network or networks, together with the software, systems, protocols and techniques designed to facilitate various services, such as content delivery or the support of outsourced site infrastructure. Typically, “content delivery” means the storage, caching, or transmission of content, streaming media and applications on behalf of content providers, including ancillary technologies used therewith including, without limitation, DNS query handling, provisioning, data monitoring and reporting, content targeting, personalization, and business intelligence.
A content delivery network such as that just described typically supports different content formats, and offers many advantages for accelerating the delivery of content, once created. However, the content provider still faces the problem of creating and managing the creation of all of the various versions of content that it desires and/or that are necessary.
Thus, there is a need to provide methods and systems for generating, preparing and transforming streaming content in an efficient and scalable way. There is also a need to provide such functionality in a way that is compatible with delivery solutions so as to provide an overall end-to-end solution for content providers. The teachings herein address these needs and offer other features and advantages that will become apparent in view of this disclosure.